package cn.xiaopengstack.types.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.Map;
import java.util.Objects;

/**
 * @author jiangyangang
 */
@Data
@ConfigurationProperties(prefix = "notify", ignoreInvalidFields = true)
public class NotifyConfigProperties {

    /**
     * 场景适配MAP
     */
    private Map<String, Map<String, Object>> scenes;

    /**
     * 根据场景名称和类型获取配置
     * @param scene 场景名称
     * @param type 配置类型(如mq)
     * @return 配置对象，如果不存在返回null
     */
    public Map<String, Object> getSceneConfig(String scene, String type){
        if (Objects.nonNull(scenes) && scenes.containsKey(scene)) {
            Map<String, Object> sceneMap = scenes.get(scene);
            if (Objects.nonNull(sceneMap) && sceneMap.containsKey(type)) {
                return (Map<String, Object>) sceneMap.get(type);
            }
        }

        return null;
    }


    /**
     * 根据场景名称、类型和配置项获取具体配置值
     * @param scene 场景名称
     * @param type 配置类型
     * @param key 配置项键名
     * @return 配置值，如果不存在返回null
     */
    public Object getConfigValue(String scene, String type, String key) {
        Map<String, Object> config = getSceneConfig(scene, type);
        if (config != null && config.containsKey(key)) {
            return config.get(key);
        }
        return null;
    }
}
